package com.dearbinge.data.dao.moments;

import com.baomidou.mybatisplus.plugins.Page;
import com.dearbinge.data.pojo.commodity.CommodityMessage;
import com.dearbinge.data.pojo.life.LifeMessage;
import com.dearbinge.data.pojo.moments.BusinessCircle;
import com.dearbinge.data.pojo.moments.vo.BusinessCircleVO;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * 社交圈dao
 *
 * @author wes
 * @date 2019/1/3
 */
@Mapper
public interface BusinessCircleMapper {


    /**
     * 社交圈动态
     *
     * @param id     表id
     * @param userId 用户id
     * @param type   0 全部 1 商品 2 生活
     * @param page   分页
     * @return 结果
     */
    List<BusinessCircleVO> listBusinessCircle(@Param("userId") String userId, @Param("id") Integer id, @Param("type") Integer type, Page page);


    /**
     * 根据类型计算总条数
     *
     * @param id     表id
     * @param userId 用户id
     * @param type   0 全部 1 商品 2 生活
     * @return 结果
     */
    Integer countMessageByType(@Param("userId") String userId, @Param("id") Integer id, @Param("type") Integer type);


    /**
     * 分页 查询个人全部社交圈
     *
     * @param userId 用户id
     * @param page   分页
     * @param type    0:全部 1：商品 2：生活
     * @return 分页结果
     */
    List<BusinessCircle> listMyAllMomentsPage(@Param("userId")String userId,@Param("type")Integer type, Page page);

    /**
     * 统计 查询个人全部社交圈
     *
     * @param userId 用户id
     * @param type    0:全部 1：商品 2：生活
     * @return 结果
     */
    Long countMyAllMoments(@Param("userId")String userId,@Param("type")Integer type);

    /**
     * 往社交圈插入生活信息
     *
     * @param lifeMessage 生活信息
     * @return 结果
     */
    Integer insertLifeMessage(LifeMessage lifeMessage);

    /**
     * 往社交圈插入商品信息
     *
     * @param commodityMessage 生活信息
     * @return 结果
     */
    Integer insertCommodityMessage(CommodityMessage commodityMessage);

    /**
     * 往社交圈更新生活信息
     *
     * @param lifeMessage 生活信息
     * @return 结果
     */
    Integer updateLifeMessage(LifeMessage lifeMessage);

    /**
     * 往社交圈更新商品信息
     *
     * @param commodityMessage 生活信息
     * @return 结果
     */
    Integer updateCommodityMessage(CommodityMessage commodityMessage);


    /**
     * 根据circleId删除社交圈
     *
     * @param circleId   社交圈id
     * @return 影响行数
     */
    Integer delete(Integer circleId);



    /**
     *  查询单条动态
     *
     * @param tableId 分表id
     * @param tableType 类型（0：商品  1：生活）
     * @return 分页结果
     */
    BusinessCircle getByTableId(@Param("tableId")Integer tableId,@Param("tableType")Integer tableType);


    /*————————————————————————废弃的接口 新版本上线后删除————————————————————————————————————*/


}